package com.sharding.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * @author wl
 * @Description: 继承AbstractRoutingDataSource并重写其中的方法determineCurrentLookupKey()。
 * 在线程安全的类中指定数据源。
 * @date 2018/12/1416:52
 */
public class DynamicDataSource extends AbstractRoutingDataSource {

    private static final Logger logger = LoggerFactory.getLogger(DynamicDataSource.class);

    /**
     * dataSourceConfig中设置的多个数据源，在执行方法的时候选择指定的数据源
     *
     * @return
     */
    @Override
    protected Object determineCurrentLookupKey() {
        //设置key即可，Map<Object, Object> targetDataSources存多个数据源
        logger.info("动态数据源{}",DataSourceContextHolder.getDB());
        return DataSourceContextHolder.getDB();
    }
}
